#pragma once

#include "SPI_Driver.h"

typedef union
{
	uint32_t data;
	struct
	{
		uint32_t crc		: 6;
		uint32_t mag_state	: 2;
		uint32_t push		: 1;
		uint32_t track_loss	: 1;
		uint32_t angle		: 14;
	};
}CoderData_t;

/*
********************************************************************************
*描    述 : 注册SPI驱动变量并初始化MT6701,CPOL=Low,CPHA=2Edge, 波特率<=164Kbit/s!!!
*返    回 : 0:成功；1--重复初始化已经注册过了；-1--spi_drive变量已经用完，需调整USE_SPI_NUM数据。
********************************************************************************/
int MT6701_Init(SPI_HandleTypeDef *hspi, osSemaphoreId done_sem);
/*
********************************************************************************
*描    述 : 从MT6701中获得原始角度数据0~8192(2^13),14位始终为1(有数据),波特率<=164Kbit/s!!!
*返    回 : statues=0或4:返回角度数据；statues=其它:返回值无效。
********************************************************************************/
int MT6701_GetRawData(CoderData_t *coder_data);
